home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / util / cli / foreach.lha / foreach.dok < prev   
Text File  |  1994-07-20  |  4KB  |  152 lines

  1.  
  2.                         Foreach - Deluxe
  3.                         ================
  4.  
  5.                            Version 1.0
  6.                             (31.3.94)
  7.  
  8.  
  9. Dieses Foreach-Kommando ermöglicht es, mit Kommandos, die normalerweise
  10. keine Jokerzeichen unterstützen (z.B. Rename), solche zu verwenden. Es
  11. ist aber so flexibel, daß es ein weit größeres Anwendungsgebiet hat und 
  12. man es so schon nach kurzer Zeit nicht mehr missen möchte.
  13.  
  14.  
  15. Aufruf:
  16. -------
  17.  
  18.   foreach <Muster> <Kommando>
  19.  
  20.  
  21. Einführung:
  22. -----------
  23. Da ich meine, daß man das Kommando am besten an Beispielen erlernen kann,
  24. zuerst einige Beispiele zur Einführung:
  25.  
  26.  
  27. - Anzeigen aller Dateien, die auf .c enden mit dem 'more' Befehl:
  28.  
  29.   foreach #?.c more &
  30.  
  31.   Das Muster ist hierbei #?.c . Das Kommando wird nun für jedes passende
  32.   File aufgerufen, wobei das '&'-Zeichen jedesmal durch den Filenamen
  33.   ersetzt wird.
  34.  
  35.  
  36. - Alle #?.lha und #?.lzh Dateien in die RamDisk entpacken:
  37.  
  38.   foreach #?.(lha|lzh) lha x & ram:
  39.  
  40.  
  41. - Abändern der Endung .lzh in .lha bei allen Files:
  42.  
  43.   foreach #?.lzh rename & &<.lha
  44.  
  45.   Das ist neu! Die Zeichen '&<' werden im Gegensatz zum einfachen '&' durch
  46.   den Filenamen ohne Endung ersetzt.
  47.  
  48.  
  49. - Dreifaches Kopieren einer Datei:
  50.  
  51.   foreach {copy1,copy2,copy3} copy Original &
  52.  
  53.   Erzeugt drei Kopien von Original mit den Namen copy1,copy2 und copy3.
  54.  
  55.  
  56. - Compilieren aller #?.cc Dateien mit gcc:
  57.  
  58.   foreach #?.cc gcc $
  59.  
  60.   Man beachte: Das '$'-Zeichen wird auf einmal zu allen passenden Files
  61.   expandiert, es wird also nur ein Kommando erzeugt, das z.B. so aussehen
  62.   könnte: ( gcc file1.cc file2.cc file3.cc )
  63.  
  64.  
  65.  
  66. Referenz:
  67. ---------
  68.  
  69.   &  - wird bei jedem Kommando, das erzeugt wird, durch einen passenden
  70.        String aus dem Muster (z.B. dem Filenamen) ersetzt.
  71.  
  72.   &< - wie '&', nur wird hier die Endung weggelassen (die letzte Endung,
  73.        falls es mehrere Punkte im Namen gibt). Gibt es keinen Punkt, so
  74.        wird (wie bei '&') der komplette String verwendet.
  75.  
  76.   &> - wie '&', nur wird hier nur die Endung übernommen (die letzte Endung).
  77.        Falls keine Endung existiert, wird ein leerer String verwendet
  78.        (also auch kein Leerzeichen).
  79.  
  80.   $  - wird durch alle passenden Strings aus dem Muster (gleichzeitig)
  81.        ersetzt (durch je ein Leerzeichen getrennt, am Anfang und Ende kein
  82.        Leerzeichen).
  83.  
  84.   && - wird durch ein einzelnes '&'-Zeichen ersetzt.
  85.  
  86.   %  - wird durch einen leeren String ersetzt.
  87.  
  88.  
  89.  
  90. Bemerkungen:
  91. ------------
  92.  
  93.  - In der Mengenangabe können auch leere Elemente vorkommen. Also z.B.:
  94.    {} oder {aaa,aa,a,}.
  95.  
  96.  - Vorsicht! Kommen in einem String in der Menge Leerzeichen vor, so muß
  97.    die Menge in Anführungszeichen gesetzt werden, da der Commandline-Parser
  98.    ja an den Leerzeichen die Argumente auseinanderschneidet:
  99.  
  100.    Falsch:   {Hugo Klein,Ernie,Bert}
  101.    Richtig: "{Hugo Klein,Ernie,Bert}"
  102.  
  103.  - Sobald in einem Kommando ein '&'-Zeichen vorkommt, werden mehrere
  104.    einzelne Kommandos erzeugt. (Kommen also nur '$'-Zeichen vor, so
  105.    wird nur ein Kommando erzeugt).
  106.  
  107.  
  108. Tips:
  109. -----
  110.  
  111.  - Es ist möglich, mehrere 'foreach'-Kommandos zu schachteln, wodurch das
  112.    Kommando noch leistungsfähiger wird.
  113.  
  114.    Beispiel: Anfertigen von zwei Sicherheitskopien aller #?.c Dateien:
  115.  
  116.      foreach #?.c foreach {bak1,bak2} copy & &<.&&
  117.  
  118.    Man beachte, daß das erste 'foreach' das '&&'-Zeichen zu einem einzelnen
  119.    '&' verkürzt, so daß das zweite 'foreach' z.B. so aussieht:
  120.      foreach {bak1,bak2} file1.c file1.&
  121.  
  122.  
  123.  - Das '%' Zeichen dient vor allem dazu, Mehrdeutigkeiten zu verhindern.
  124.    Man will z.B. einen String zweimal direkt hintereinander schreiben:
  125.    Falsch:  foreach {hallo,test,moin} echo &&
  126.    Richtig: foreach {hallo,test,moin} echo &%&
  127.  
  128.  
  129.  
  130. Copyright:
  131.   Diese Programm ist Public Domain. Es darf beliebig kopiert werden unter
  132.   der Voraussetzung, daß das Programm und diese Anleitung in keiner Weise
  133.   verändert werden und das Programm nie getrennt von der Anleitung kopiert
  134.   wird.
  135.   Das Programm darf ohne meine Erlaubnis weder verkauft, noch zu
  136.   kommerziellen Produkten hinzugefügt werden (bitte vorher Brief oder EMail
  137.   an mich).
  138.  
  139.  
  140.   Dirk Farin
  141.   Kapellenweg 15
  142.   72070 Tübingen
  143.   Germany
  144.  
  145.   EMail: farindk@trick.informatik.uni-stuttgart.de
  146.  
  147.  
  148.   Über Bug-Reports und Verbesserungsvorschläge würde ich mich sehr freuen!
  149.   
  150.  
  151.  
  152.